/**
 * 
 * @param {number[]} arr 
 * @description 设置一个flag 如果经过全部的j循环后 没有进入过if语句 则直接退出循环
 */

function bubbleSort(arr) {
    const len = arr.length
    for (let i = 0; i < len; i++) {
        // 设置一个标识符
        let flag = false
        for (let j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
                // 只要发生了一次交换
                flag = true
            }
        }
        // 如果没有发生交换 说明数组已经是有序的了
        if (!flag) {
            return arr
        }
    }
    return arr
}

console.log(bubbleSort([5, 4, 3, 2, 1]))
console.log(bubbleSort([4, 3, 5, 2, 1]))